// 箭头函数
// this指向
// 1. 通过对象调用函数,this指向对象
// 2. 直接调用函数,this指向全局对象
// 3. 如果通过new调用函数,this指向新创建的对象
// 4. 如果通过apply,call和bind调用函数,this指向绑定的对象
// 5. 如果是dom世间函数, this指向事件源

// 使用语法
// 箭头函数是一个函数表达式
// 理论上, 热河使用函数表达式的场景都可以使用箭头函数

// 语法
// (arg1,arg2,...args)=>{}
// 简写 一个参数可以省略()
// 简写 一条语句可以省略return
// 其中 一条返回语句 直接返回{a:1,b:3} 需要({a:1,b:3})用括号包裹一下

// 注意细节
// 1.不存在 this,arguments,new.target如果使用了, 则使用的是函数外层的
// 2.箭头函数没有原型
// 3.不能当做构造函数使用

// 应用场景
// 临时性使用的函数,并不会可以调用它,比如:
// 1. 事件处理函数
// 2. 异步处理函数
// 3. 其他临时的处理函数
// 4. 为了绑定外层this的函数
// 5. 数组方法中的回调函数
// 6. 不影响其他代码的情况下,不是为了使用this调用

// 例子
(function () {
  return;
  const obj = {
    count: 0,
    start: function () {
      const that = this; // 闭包的应用
      console.log(that.count);
      setInterval(function () {
        // 这里的this 是指向全局的window
        // this.count++;

        that.count++;
        console.log(that.count);
      }, 1000);
    },
  };
  obj.start();
})();

// 在对象里面直接用箭头函数
(function () {
  // return
  const obj = {
    count: 0,
    setCount: () => {
      //   console.log(this.count);
    },
  };
  obj.setCount();
  console.log(obj.setCount.prototype);
})();
